package modelo.bd.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import modelo.bd.ConexionPool;
import modelo.bd.excepcion.DAOException;
import modelo.dominio.Perfil;
import modelo.servicio.Usuarios;

public class PerfilDAO {
    
    private String query;
    protected List<Perfil> select() throws DAOException {
        Connection conexion = null;
        PreparedStatement sentencia = null;
        ResultSet resultado = null;
        List<Perfil> resultados = null;
        try {
            conexion = ConexionPool.getInstancia().getConexion();
            sentencia = conexion.prepareStatement(query);
            resultado = sentencia.executeQuery();
            resultados = new ArrayList<Perfil>();
            while (resultado.next()) {
                Perfil perfil = new Perfil();
                perfil.setUsuario(Usuarios.instancia().porClave(resultado.getString("usuario")));
                perfil.setPermiso(resultado.getString("permiso"));
                resultados.add(perfil);
            }
        } catch (SQLException ex) {
            throw new DAOException("Error PEDS-SQL " + ex.getMessage());
        } finally {
            try {
                if (resultado != null) {
                    resultado.close();
                }
                if (sentencia != null) {
                    sentencia.close();
                }
                if (conexion != null) {
                    conexion.close();
                }
            } catch (SQLException ex) {
                throw new DAOException("Error PEDS-SQL " + ex.getMessage());
            }
        }
        return resultados;
    }
    
    public List<Perfil> selectWhere(String condition) throws DAOException {
        query = "SELECT peus_uspe_usuario AS usuario, \n"
                    + "       peus_uspe_perfil  AS permiso \n"
                    + "FROM   sil_perfiles_usuario \n"
                    + "WHERE  " + condition;
        return select();
    }

    public List<Perfil> selectAll() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
